import sys

# 打印不合法的文件名
# 程序获取一个目录中的文件名列表，但是尝试打印文件名的时候，出现UnicodeEncodeError异常和surrogates not allowed
def bad_filename(filename):
    # 文件名重新编码
    temp = filename.encode(sys.getfilesystemencoding(), errors='surrogateescape')
    return temp.decode('latin-1')

def demo_1():
    filename='kepler.txt'
    try:
        print(filename)
    except UnicodeEncodeError:
        print(bad_filename(filename))

if __name__ == '__main__':
    demo_1()